package cn.tedu.oop;

/**
 * @Author 金帮嘉诚
 * @Date 2021-06-10 周四 11:35
 */
/*本类用作多态的入门案例*/
public class TestDemo {
    public static void main(String[] args) {
        Animal animal=new Animal();
        Cat cat=new Cat();
        animal.eat();//
        cat.eat();//重写之不同
//        animal.jump();父类无法使用子类的特有方法
        cat.jump();
        /*8.创建多态对象进行测试*/
        /*口诀1： 父类引用指向子类对象*/
        /*口诀2：编译看左边，运行看右边*/
        /*多态的两个前提 继承+重写 缺一不可！！！*/
        /*多态使用的是父类的声明，子类的具体实现*/

        Animal a2=new Cat();
        a2.eat();
        /*多态不可以调用子类的特有功能，只能调用重写的父类的功能*/
//        a2.jump();
        Animal a3=new Dog();
        a3.eat();
        /*多态的出现是为了统一调用标准，向父类看齐
        * 父类声明的功能才能用，子类特有的功能用不了*/
    }
}
class Animal{
    public void eat(){
        System.out.println("小动物Animal吃啥都行~");
    }
}
class Cat extends Animal{
    public void eat(){//重写
        System.out.println("小猫Cat爱吃小鱼干");
    }
    public void jump(){//特有方法
        System.out.println("小猫Cat跳的高~");
    }

}
class Dog extends Animal{
//    public void eat(){
//        System.out.println("Dog eat meat");
//    }
}
